package sifeap.entities.soportes;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.Cacheable;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import sifeap.entities.solicitudesauxilio.SolicitudAuxilio;
import sifeap.entities.solicitudescredito.Codeudor;
import sifeap.entities.solicitudescredito.SolicitudCredito;


/**
 * The persistent class for the soportes database table.
 * 
 */
@Entity
@Cacheable(false)
@Table(name="soportes", schema="sifeap")
public class Soporte implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@SequenceGenerator(name = "IDSOPORTE_GENERATOR", sequenceName = "seq_soportes", schema="sifeap", allocationSize = 1)
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "IDSOPORTE_GENERATOR")
	@Column(unique=true, nullable=false, precision=8)
	private Long idSoporte;

	@Column(length=128)
	private String descripcion;

	@Temporal(TemporalType.TIMESTAMP)
	@Column(nullable=false)
	private Date fechaRegistro;

	@Column(nullable=false, length=128)
	private String nombreArchivo;

	//bi-directional many-to-many association to Codeudor
	@ManyToMany
	@JoinTable(
		name="soportescodeudor"
		, joinColumns={
			@JoinColumn(name="idsoporte", nullable=false)
			}
		, inverseJoinColumns={
			@JoinColumn(name="idcodeudor", nullable=false)
			}
		, schema="sifeap"
		)
	private List<Codeudor> codeudores;

	//bi-directional many-to-many association to SolicitudAuxilio
	@ManyToMany
	@JoinTable(
		name="soportesauxilio"
		, joinColumns={
			@JoinColumn(name="idsoporte", nullable=false)
			}
		, inverseJoinColumns={
			@JoinColumn(name="idsolicitudauxilio", nullable=false)
			}
		, schema="sifeap"
		)
	private List<SolicitudAuxilio> solicitudesauxilios;

	//bi-directional many-to-many association to SolicitudCredito
	@ManyToMany
	@JoinTable(
		name="soportescredito"
		, joinColumns={
			@JoinColumn(name="idsoporte", nullable=false)
			}
		, inverseJoinColumns={
			@JoinColumn(name="idsolicitudcredito", nullable=false)
			}
		, schema="sifeap"
		)
	private List<SolicitudCredito> solicitudescreditos;

	//bi-directional many-to-one association to TipoSoporte
	@ManyToOne
	@JoinColumn(name="idtiposoporte", nullable=false)
	private TipoSoporte tipossoporte;

	public Soporte() {
	}

	public Long getIdSoporte() {
		return this.idSoporte;
	}

	public void setIdSoporte(Long idSoporte) {
		this.idSoporte = idSoporte;
	}

	public String getDescripcion() {
		return this.descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public Date getFechaRegistro() {
		return this.fechaRegistro;
	}

	public void setFechaRegistro(Date fechaRegistro) {
		this.fechaRegistro = fechaRegistro;
	}

	public String getNombreArchivo() {
		return this.nombreArchivo;
	}

	public void setNombreArchivo(String nombreArchivo) {
		this.nombreArchivo = nombreArchivo;
	}

	public List<Codeudor> getCodeudores() {
		return this.codeudores;
	}

	public void setCodeudores(List<Codeudor> codeudores) {
		this.codeudores = codeudores;
	}

	public List<SolicitudAuxilio> getSolicitudesauxilios() {
		return this.solicitudesauxilios;
	}

	public void setSolicitudesauxilios(List<SolicitudAuxilio> solicitudesauxilios) {
		this.solicitudesauxilios = solicitudesauxilios;
	}

	public List<SolicitudCredito> getSolicitudescreditos() {
		return this.solicitudescreditos;
	}

	public void setSolicitudescreditos(List<SolicitudCredito> solicitudescreditos) {
		this.solicitudescreditos = solicitudescreditos;
	}

	public TipoSoporte getTipossoporte() {
		return this.tipossoporte;
	}

	public void setTipossoporte(TipoSoporte tipossoporte) {
		this.tipossoporte = tipossoporte;
	}

}